package chapter08.s01threadcreate;

/**
 * 两种实现多线程方式的对比分析
 *
 * 场景： 售票厅有4个窗口，发售100张车票
 *
 * 1.继承Thread类
 * 四个线程没有共享100张票，而是各自出售了100张票
 * 在程序中创建了四个TicketWindow对象，就等于创建了四个售票程序，
 * 每个程序中都有100张票，每个线程在独立地处理各自的资源。
 *
 */
public class Example04 {
    public static void main(String[] args) {
        new TicketWindow04().start(); // 创建第一个线程对象TicketWindow并开启
        new TicketWindow04().start(); // 创建第二个线程对象TicketWindow并开启
        new TicketWindow04().start(); // 创建第三个线程对象TicketWindow并开启
        new TicketWindow04().start(); // 创建第四个线程对象TicketWindow并开启

        //四个线程没有共享100张票，而是各自出售了100张票
    }
}

class TicketWindow04 extends Thread {
    private int tickets = 100;

    public void run() {
        while (true) { // 通过死循环语句打印语句
            if (tickets > 0) {
                Thread th = Thread.currentThread(); // 获取当前线程
                String th_name = th.getName(); // 获取当前线程的名字
                System.out.println(th_name + " 正在发售第 " + tickets-- + " 张票 ");
            }
        }
    }
}
